<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Cardapio extends MY_Controller{
	public function __construct(){
		parent::__construct();
		$this->load->model('negocio/cardapio_model', 'Cardapio_model');
		$this->load->model('negocio/empresa_model', 'Empresa_model');
		$this->load->model('negocio/paravoce_model', 'paravoce_model');
	}

	public function empresa($cod_empresa_auto, $nome){
		$user       = $this->getLoggedUser();
		$itens 		= array();
		$categorias = array();

		if(empty($cod_empresa_auto)){
			redirect('home/estabelecimentos');
		}

		$q 			= $this->Cardapio_model->getItens($cod_empresa_auto);
		$categorias = $this->Cardapio_model->getCardapioEmpresa($cod_empresa_auto);
		
		foreach ($q->result() as $value){
			$itens[] = array(
				'cod_item_auto' => $value->cod_item_auto,
				'cod_empresa_auto' => $value->cod_empresa_auto,
				'desc_item' => $value->desc_item,
				'obs' => $value->obs
				);
		}

		$empresa = new Empresa($cod_empresa_auto);

		$this->setViewData('permite_pedido', $this->isPessoaLoggedIn());
		$this->setViewData('itens', $itens);
		$this->setViewData('categorias', $categorias);
		$this->setViewData('empresa', $empresa);
		$this->setViewData('main_content', 'universodelivery/cardapio_itens');

		$cart_session = $this->session->userdata('carrinho');

		$cliente_bloqueado = false;

		if($this->isPessoaLoggedIn()){
			$cliente_bloqueado = $this->Empresa_model->clienteBloqueado($cod_empresa_auto, $user["cod"]);	
		}

		$this->setViewData('locais_entrega', $this->paravoce_model->getLocaisEntrega($user['cod']));

		$this->setViewData('carrinho', $this->get_cardapio_html($cod_empresa_auto));
		$this->setViewData('cliente_bloqueado', $cliente_bloqueado);
		$this->setViewData('cod_empresa_auto', $cod_empresa_auto);
		$this->setViewData('nome_empresa', $nome);
		// plugin validação + extras para validar CPF/CNPJ e mensagens padrão
		$this->addScript(base_url('assets/js/jquery.validate.min.js'));
		$this->addScript(base_url('assets/js/shared/validation.js'));
		// plugin p/ colocar máscara nos campos
		$this->addScript(base_url('assets/js/jquery.maskedinput.min.js'));
		// script p/ a página
		$this->addScript(base_url('assets/js/cardapio/cardapio.js'));

		$this->load->view('_shared/template', $this->viewData);
	}

	public function fechar_pedido($cod_empresa_auto, $nome){
		$datetime        = $this->input->post('datetime');
		$cardapio 		 = $this->input->post('cardapio');
		$forma_pagamento = $this->input->post('forma_pagamento');
		$local_entrega   = $this->input->post('local_entrega');

		$cart_session = $this->session->userdata('carrinho');
		$obj_carrinho = "";

		if($datetime && $cardapio && $forma_pagamento && $local_entrega){

			foreach($cart_session as $empresa=>$tamanhos){
				if($empresa == $cod_empresa_auto){
					$obj_carrinho = new Carrinho($cardapio, $tamanhos);	
					break;
				}
			}

			if(!empty($obj_carrinho)){
				$this->db->where('cod_empresa_auto', $cardapio);
				$this->db->where('cod_forma_auto', (int)$forma_pagamento);
				$query = $this->db->get('forma_pagto_emp');
				$row   = $query->row();
				
				$dataPedido = array(
					'cod_forma_emp_auto' => $row->cod_forma_emp_auto,
					'cod_local_auto'     => (int)$local_entrega,
					'data_pedido'        => date("Y-m-d"),
					'hora_pedido'        => date("H:i:s"),
					'taxa_entrega'	     => $obj_carrinho->getTaxaEntrega(),
					'total_itens'        => $obj_carrinho->getTotalItens(),
					'total_pedido'       => $obj_carrinho->getSubTotal()
				);

				$this->db->insert('pedido', $dataPedido);	
				$cod_pedido_auto = $this->db->insert_id();
				
				$seq = 1;

				foreach($obj_carrinho->getProdutos() as $item){
					$dataItem = array(
						'cod_pedido_auto'   => $cod_pedido_auto,
						'cod_item_auto'     => (int)$item->getTamanho()->getCodItem(),
						'cod_tamanho_auto'  => (int)$item->getTamanho()->getCodTamanho(),
						'seq_item'     		=> $seq,
						'preco_unitario'	=> (float)$item->getTamanho()->getPreco(),
						'qtd_item'			=> (int)$item->getQuantidade(),
						'subtotal_item'		=> $item->getTamanho()->getPreco() * $item->getQuantidade()
					);
					
					$this->db->insert('item_pedido', $dataItem);
				    $cod_item_ped_auto = $this->db->insert_id();

					$seq++;

					foreach($item->getAdicionais() as $adicional){
						$dataAdicional = array(
							'cod_item_ped_auto' => $cod_item_ped_auto,
							'cod_ingre_auto'	=> $adicional->getCodIngrediente(),
							'qtd_adicional'		=> (int)$item->getQuantidade(),
							'preco_unitario'	=> $adicional->getIngrediente()->getPrecoIngrediente(),
							'subtotal_adic'		=> $adicional->getIngrediente()->getPrecoIngrediente() * $item->getQuantidade()
						);

						$this->db->insert('adicional_item_ped', $dataAdicional);
					}
				}

				unset($cart_session[$cod_empresa_auto]);
				$cart_session = $this->session->set_userdata('carrinho', $cart_session);

				$this->setViewData('mensagem_pedido', 'Pedido realizado com sucesso. Clique '. anchor('paravoce/pedidos/detalhes/'.$cod_pedido_auto, 'aqui'). ' para consultá-lo.');
			}
		}

		$this->empresa($cod_empresa_auto, $nome);
	}

	public function getproduto($idproduto){
		$result = array(
			"tamanhos"     => array(),
			"ingredientes" => array()
		);

		$produto = new Item($idproduto);

		foreach($produto->getTamanhos() as $tam){
			$result["tamanhos"][] = array("cod"  => $tam->getCodTamanhoItemAuto(),
										  "desc" => $tam->getTamanho()->getDescTamanho() . " - R$ " . number_format($tam->getPreco(), 2, ',', ''));
		}

		foreach($produto->getIngredientes() as $ingre){
			$result["ingredientes"][] = array("cod"  => $ingre->getCodIngreItemAuto(),
			 								  "desc" => $ingre->getIngrediente()->getDescIngrediente() . " - R$ " . number_format($ingre->getIngrediente()->getPrecoIngrediente(), 2, ',', ''));
		}

		echo json_encode($result);
	}

	public function add_to_cart(){
		$carrinho     = $this->session->userdata('carrinho');
		$datetime     = $this->input->post('datetime');
		$tamanho      = $this->input->post('tamanhoItem');
		$quantidade   = $this->input->post('quantidade');
		$ingredientes = $this->input->post('ingredientes');

		if(!is_array($carrinho)){
			$carrinho = array();
		}

		if($datetime){
			$tamItem = new Tamanho_item($tamanho);
			$cod_empresa_auto = $tamItem->getTamanho()->getCodEmpresa();

			if($cod_empresa_auto > 0){
				if(isset($carrinho[$cod_empresa_auto]) && is_array($carrinho[$cod_empresa_auto]) && isset($carrinho[$cod_empresa_auto][$tamanho])){
					$carrinho[$cod_empresa_auto][$tamanho]["quantidade"]   += $quantidade;
					if(is_array($carrinho[$cod_empresa_auto][$tamanho]["ingredientes"])){
						$carrinho[$cod_empresa_auto][$tamanho]["ingredientes"] += $ingredientes;
					}else{
						$carrinho[$cod_empresa_auto][$tamanho]["ingredientes"] = $ingredientes;
					}
				}else{
					$carrinho[$cod_empresa_auto][$tamanho] = array("quantidade" => $quantidade, "ingredientes" => $ingredientes);
				}
			}

			$this->session->set_userdata('carrinho', $carrinho);
		}
	}

	public function remove_from_cart($idtamitem){
		$retorno  		  = '';
		$carrinho         = $this->session->userdata('carrinho');
		$tamItem  		  = new Tamanho_item($idtamitem);
		$cod_empresa_auto = $tamItem->getTamanho()->getCodEmpresa();

		if(is_array($carrinho) && isset($carrinho[$cod_empresa_auto])){
			unset($carrinho[$cod_empresa_auto][$idtamitem]);
			$this->session->set_userdata('carrinho', $carrinho);
		}

		$this->get_cardapio_html($cod_empresa_auto);
	}

	public function view_cart(){
		//var_dump($this->session->userdata('carrinho'));

		$cart_session = $this->session->userdata('carrinho');

		foreach($cart_session as $empresa=>$tamanhos){
			//$carrinho = new Carrinho($empresa, $tamanhos);
			var_dump($tamanhos);
			//exit;
		}
	}

	public function get_cardapio_html($cod_empresa_auto, $btn_excluir = TRUE){
		$cart_session = $this->session->userdata('carrinho');
		$carrinho = '';

		if(is_array($cart_session)){
			foreach ($cart_session as $empresa => $tamanhos) {
				if($empresa == $cod_empresa_auto && is_array($tamanhos) && count($tamanhos) > 0){
					$carrinho = new Carrinho($empresa, $tamanhos);		
					break;
				}
			}
		}
		
		$html = "";

		if(!empty($carrinho)){
			
			$html .= "<table class=\"table pedido\">";
				$html .= "<tbody>";
					
				foreach($carrinho->getProdutos() as $produto){
					$html .= "<tr>";
				    	$html .= "<td>".$produto->getQuantidade()."x</td>"; 
				    	$html .= "<td colspan=\"2\">";
				    	
				    	if($btn_excluir){
					    	$html .= "<a href=\"#\" class=\"pull-right removerItemCarrinho\" data-idtamanho=\"".$produto->getTamItemAuto()."\">";
					    	$html .= "<span class=\"glyphicon glyphicon-remove\"></span>";
					    	$html .= "</a>";
					    }
			    	
				    	$html .= "<strong>".$produto->getTamanho()->getItem()->getDescItem()."</strong>";
				    	$html .= br();
				    	$html .= "Tamanho: ". $produto->getTamanho()->getTamanho()->getDescTamanho() . " - R$ " . number_format($produto->getTamanho()->getPreco(), 2, ',', '');

				    	if(count($produto->getAdicionais()) > 0){
							$html .= "<p style=\"font-size:10px; font-weight:bold; padding:0; padding-top:8px; margin:0;\">Adicionais</p>";
							foreach($produto->getAdicionais() as $adicional){
								$html .= $adicional->getIngrediente()->getDescIngrediente() . ' - R$ ' . number_format($adicional->getIngrediente()->getPrecoIngrediente(), 2, ',','');
								$html .= br();
							}
						}

			    		$html .= "</td>";
			    	$html .= "</tr>";
			    }
		    
			    $html .= "</tbody>";
			    $html .= "<tfoot>";
				    $html .= "<tr class=\"active\">";
					    $html .= "<td style=\"width:20px;\"></td>";
					    $html .= "<td>";
						    $html .= "<span style=\"color:#666;\">Total itens<br />";
						    $html .= "Taxa entrega<br /></span>";
						    $html .= "<strong>Total pedido</strong>";
					    $html .= "</td>";
					    $html .= "<td class=\"text-right\" style=\"width:100px;\">";
						    $html .= "<span style=\"color:#666;\">R$ " . number_format($carrinho->getTotalItens(), 2, ',', '') . "<br />";
						    $html .= "R$ " . number_format($carrinho->getTaxaEntrega(), 2, ',', '') . "<br /></span>";
						    $html .= "<strong>R$ " . number_format($carrinho->getSubTotal(), 2, ',', '') . "</strong>";
					    $html .= "</td>";
				    $html .= "</tr>	";		    		
			    $html .= "</tfoot>";
		  	$html .= "</table>";
		}
		
		if($this->input->is_ajax_request()){
			echo $html;
		}else{
			return $html;
		}
	}
	
}